package com.atbeijing.bigdata.spark.core.rdd.persist

import org.apache.spark.storage.StorageLevel
import org.apache.spark.{SparkConf, SparkContext}

object Spark02_RDD_Persist {

    def main(args: Array[String]): Unit = {

        val conf = new SparkConf().setMaster("local").setAppName("Persist")
        val sc = new SparkContext(conf)

        val rdd = sc.makeRDD(
            List("Hello Scala")
        )
        val rdd1 = rdd.flatMap(_.split(" "))
        val rdd2 = rdd1.map(
            s => {
                println(s)
                (s, 1)
            })

        rdd2.cache()
        //指定缓存方式
        //rdd2.persist(StorageLevel.DISK_ONLY)
        // 如果在开发过程中，同一个RDD需要重复使用，那么最好增加缓存cache
        val rdd3 = rdd2.reduceByKey(_+_)
        val rdd4 = rdd2.groupByKey
        rdd3.collect().foreach(println)
        rdd4.collect().foreach(println)


        sc.stop()
    }
}
